Information technology is now routinely used by many enterprises to receive, process, and provide information via widely accessible electronic communications networks, such as the Internet. Yet most information technology systems will begin to deny service, or fail to process message traffic efficiently, when communications traffic exceeds a processing capacity of the system. Such failures in communication can significantly impair the operations of an enterprise in many ways.
Enterprises increasingly deploy Service Oriented Architecture (SOA) systems to expand their capabilities, increase their responsiveness to internal and external requests, and improve operational productivity. SOA is now being widely used to efficiently implement new Internet-based business processes, Web Services and other information processing protocols. SOA applications are often easily generated using commercially available Web Service orchestration tools in which message flow pathways are defined in accordance with intentional business logic.
Most SOA-based information technology systems and networks can integrate capabilities from an expanding and increasingly rich selection of available public services. Unfortunately, the communications burden placed on SOA systems that provide services via the Internet can be difficult to forecast. Almost any SOA system connected to the Internet will receive unpredictable levels of message traffic. The communications traffic capability of many SOA applications, even on a private network, such as the Intranet, can be difficult and expensive to test, measure or estimate. These difficulties in testing SOA applications are becoming increasingly problematic. The functionality and quality of web services is important, especially given that these services are often used for critical business applications. A consumer ordering a book from an on-line retailer, for example, needs to feel assured that the service will respond promptly and accurately to a specific request.
Prior art systems often require building a single use or disposable end-to-end system for testing the capacity of a website. For example, a web-services provider (such as a bank, an on-line retailer, or an electronic dating service) may need to know how many simultaneous user requests can come to their website given their website's configuration (i.e., its hardware, software, and connection to the Internet). Thousands of messages may be received by a particular website in any given moment, and software developers need to control the sequence, the timing, and the tempo of these messages to adequately performance-test the website's capacity. Similarly, there is a need for correctness testing of SOA-based applications.
Traditionally, developers have executed this type of test by building a long series of messages—typically using Extensible Mark-Up Language (XML) messages, which are messages in a human readable language format for tagging documents that are used by web services, to simulate real-world traffic. These XML messages are typically assembled by hand, using a programming language such as Perl or JAVA. Unfortunately, the testing process is highly prone to errors because even the smallest error (such as a difference in letter case) can invalidate the entire test. It is also an arduous and expensive process to write these scripts. Maintaining the scripts and updating them to reflect system changes is also a difficult process.